package com.mx.ipn.escom.wad.proyecto.documento.model;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import com.mx.ipn.escom.wad.proyecto.usuario.model.Usuario;

/**
 * Representa el modelo para una Revision
 * @author jorge
 *
 */
@Entity
@Table(name = "revision")
public class Revision {
	
	private Integer idRevision;
	
	private String nombre;

	private String descripcion;
	
	private List<Comentario> listComentario;
	
	private Date fechaRevision;
	
	private Integer idUsuario;
	
	private Usuario usuario;
	
	public Revision(){}

	/**
	 * @return the idRevision
	 */
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_revision")
	public Integer getIdRevision() {
		return idRevision;
	}

	/**
	 * @param idRevision the idRevision to set
	 */
	public void setIdRevision(Integer idRevision) {
		this.idRevision = idRevision;
	}

	/**
	 * @return the nombre
	 */
	@Column(name = "nombre", nullable = false)
	public String getNombre() {
		return nombre;
	}

	/**
	 * @param nombre the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * @return the descripcion
	 */
	@Column(name = "descripcion", nullable = false)
	public String getDescripcion() {
		return descripcion;
	}

	/**
	 * @param descripcion the descripcion to set
	 */
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	/**
	 * @return the listComentario
	 */
	@OneToMany(mappedBy = "comentario")
	public List<Comentario> getListComentario() {
		return listComentario;
	}

	/**
	 * @param listComentario the listComentario to set
	 */
	public void setListComentario(List<Comentario> listComentario) {
		this.listComentario = listComentario;
	}

	/**
	 * @return the fechaRevision
	 */
	@Column(name = "fecha_revision", nullable = false)
	public Date getFechaRevision() {
		return fechaRevision;
	}

	/**
	 * @param fechaRevision the fechaRevision to set
	 */
	public void setFechaRevision(Date fechaRevision) {
		this.fechaRevision = fechaRevision;
	}

	/**
	 * @return the idUsuario
	 */
	@Column(name = "id_usuario", nullable = false)
	public Integer getIdUsuario() {
		return idUsuario;
	}

	/**
	 * @param idUsuario the idUsuario to set
	 */
	
	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}

	/**
	 * @return the usuario
	 */
	@ManyToOne
	@JoinColumn(name = "id_usuario", referencedColumnName = "id_usuario", insertable = false, updatable = false)
	public Usuario getUsuario() {
		return usuario;
	}

	/**
	 * @param usuario the usuario to set
	 */
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
		
}
